<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // 定义: sort()方法对数组元素进行排序，并返回这个数组。
    // 参数可选: 规定排序顺序的比较函数。
    // 默认情况下sort()方法没有传比较函数的话，默认按字母升序，如果不是元素不是字符串的话，会调用toString()方法将元素转化为字符串的Unicode(万国码)位点，然后再比较字符。
    // 数字排序的时候 因为转换成Unicode字符串之后，有些数字会比较大会排在后面 这显然不是我们想要的

    // //1.数组元素为数字的升序、降序:
    // var array = [10, 1, 3, 4, 20, 4, 25, 8];
    // // 升序 a-b < 0   a将排到b的前面，按照a的大小来排序的 
    // // 比如被减数a是10，减数是20  10-20 < 0   被减数a(10)在减数b(20)前面 
    // array.sort(function (a, b) {
    //     return a - b;
    // });
    // console.log(array); //[1,3,4,4,8,10,20,25];

    // // 降序 被减数和减数调换了  20-10>0 被减数b(20)在减数a(10)的前面
    // array.sort(function (a, b) {
    //     return b - a;
    // });
    // console.log(array);

    //2.数组多条件排序
    var array = [
        { id:10, age: 2 },
        { id:5, age: 4 },
        { id:6, age: 10 },
        { id:9, age: 6 },
        { id:2, age: 8 },
        { id:10, age: 9 },
    ];
    array.sort(function (a, b) {
        if (a.id === b.id) {// 如果id值相等，按照age的值降序
            return b.age - a.age
        } else {//如果id值不相等，按照id的值升序
            return a.id - b.id
        }
    });
    console.log(array);

    //3.自定义比较函数，天空才是你的极限
    //* 类似的：运用好返回值，我们可以写出任意符合自己需求的比较函数
    var array = [
        {name:'Koro1'},
        {name:'Koro1'},
        {name:'OB'},
        {name:'Koro1'},
        {name:'OB'},
        {name:'OB'}
        ];
        array.sort(function(a, b) {
            if(a.name === 'koro1') {// 如果name是'Koro1' 返回-1 ，-1<0 a排在b的前面
                return -1
            } else {// 如果不是，则a排在b后
                return 1
            }
        })
</script>

</html>